<?php

vendor('pragmatia'.DS.'clase.importarArchivoTexto'); 

/**
 * Este es un componente que uso para hacer el manejo de archivos desde CakePHP usando clases propias de Pragmatia
 */
class importarArchivoTextoComponent extends importarArchivoTexto {
    var $importarArchivoTexto;  
    var $controller; 
    var $debeEjecutarConcultas = true;
/**
* Constructor.
*
*/
    function __construct() {

		//vendor('pragmatia'.DS.'clase.importarArchivoTexto');
		//$this->importarArchivoTexto = new importarArchivoTexto();
    }

/**
 * StartUp
 */
    function startup(&$controller)
    {
		$this->controller = &$controller;
    }    


    
/**
 * ejecutar los queries
 * @access public
 * @param array $queries Un array unidimensional de los queryes que deben ejecutarse.
 * @return int Cantidad de consultas que se ejecutaron.
 */    
    function ejecutar($queries = false)
    {
        if(is_array($queries))
        {
            $model = $this->controller->modelClass;
            $c = 0;
            foreach($queries as $v)
            {
				//echo $v . "<br>";
				//$v = str_replace("IGNORE", "", $v);
                $this->controller->$model->query($v);
				//$x = $this->controller->lastError();
				//$db =& ConnectionManager::getDataSource($this->controller->$model->useDbConfig);
				//print_r($db->lastError());
                $c++;
            }
			return $c;
        }
        else
            return 0;
    }

/**
 * Establece si debe ejecutar los queries una vez generados o no.
 * @access public
 * @param boolean $ejecutar Un valor que si es true se ejecutaran los queries al finalizar la generacion y si es falso no
 * @return boolean.
 */    
    function setearEjecutar($ejecutar) {

        if (is_bool($ejecutar)) {
            $this->debeEjecutarConcultas = $ejecutar;
            return true;
        }
        else
            return false;
    }

	function importar() {
        
        $consultas = parent::importar();
		$cantidad_consultas = count($consultas['inserts']);

		if ($this->truncateTable)
		{
			$cantidad_consultas--;
		}		
		if ($this->cantidadLineasEnviadas == $cantidad_consultas || $this->cantidadMuestra > 0)
		{
			$c = $this->ejecutar($consultas['inserts']);    
			if ($this->truncateTable)
			{
				$c--;
			}		
			if ($this->debeEjecutarConcultas)
			{
				return $c;
			}
			else
				return $consultas;
		}
		else
		{
			if($cantidad_consultas > 0)
				$this->setearErrores("importar", "La cantidad de filas leidas desde el archivo ". $this->nombreArchivo . " (" . count($cantidad_consultas) . ") no coincide con el indicador de cantidad dentro del archivo (" . $this->cantidadLineasEnviadas . "). No se actualizara el archivo en la base de datos.");	
		}
    }    
}
?>
